òɾۿûѧϰʹá
ԭַhttps://www.joinquant.com/post/11102

ԭһ˵ʽ鵽ԭĺ߽ۡ


ԭĲԴ£

#Ծۿ

import talib
import pandas as pd
import numpy as np
import math
from sklearn.model_selection import learning_curve

import talib
#import numpy as np
#import pandas as pd

def initialize(context):
    # # ƱÿʽʱǣʱӶ֮ʱӶ֮ǧ֮һӡ˰, ÿʽӶͿ5Ǯ
    # set_order_cost(OrderCost(close_tax=0.000, open_commission=0.0000, close_commission=0.0000, min_commission=0), type='stock')
    # # 趨Ϊ̶ֵ
    # set_slippage(FixedSlippage(0.00))
    # һȫֱ, Ҫ֤ȯ                                                                                           
    context.stocks = ['399300.XSHE']
    # ҪĹƱ
    set_universe(context.stocks)

# ʼ˲
def handle_data(context, data):
    # ȡõǰֽ
    cash = context.portfolio.cash
    # ѭƱб
    for stock in context.stocks:
        # ȡƱ
        h = attribute_history(stock, 60, '1d', ('high','low','close'))
        # STOCHźţ߼ۣͼۣ̼ۺͿߣһȡΪ9
        # ע⣺STOCHʹõpricenarray
        macd, macdsignal, macdhist = talib.MACD(h['close'].values, fastperiod=9, slowperiod=24, signalperiod=9)
        # kdֵ
        print(macdsignal)
        # ȡǰƱ
        current_position = context.portfolio.positions[stock].amount
        # ȡǰƱ۸
        current_price = data[stock].price
        # slowk > 90 or slowd > 90ӵеĹƱ>=0ʱйƱ
        if macd[-1] < 0 and current_position >= 0:
            order_target(stock, 0)
        # slowk < 10 or slowd < 10, ӵеĹƱ<=0ʱȫ
        elif macd[-1] > 0 and current_position <= 0:
            # Ʊ
            order_value(stock, cash)
            # ¼
            log.info("Buying %s" % (stock))